x86/HVM: add guarding logic for VMX specific code
authorSuravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Mon, 29 Aug 2016 14:05:31 +0000 (16:05 +0200)
committerJan Beulich <jbeulich@suse.com>
Mon, 29 Aug 2016 14:05:31 +0000 (16:05 +0200)
The struct hvm_domain.vmx is defined in a union along with the svm.
This can causes issue for SVM since this code is used in the common
scheduling code for x86. The logic must check for cpu_has_vmx before
accessing the hvm_domain.vmx sturcture.

Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
xen/include/asm-x86/hvm/hvm.h

index 314881a7357750a0616e246702d67c4dcb54d035..5d463e0eff754b4ea3c199c17669274879c3d176 100644 (file)
@@ -611,7 +611,7 @@ unsigned long hvm_cr4_guest_reserved_bits(const struct vcpu *v, bool_t restore);
     struct vcpu *v_ = (v);                                      \
     struct domain *d_ = v_->domain;                             \
     if ( has_hvm_container_domain(d_) &&                        \
-         d_->arch.hvm_domain.vmx.vcpu_block )                   \
+         (cpu_has_vmx && d_->arch.hvm_domain.vmx.vcpu_block) )  \
         d_->arch.hvm_domain.vmx.vcpu_block(v_);                 \
 })